草庐IT

java - 垃圾回收实现

全部标签

javascript - `es2016` 预设的 Babel 是否实现了尾调用优化?

我使用以下示例来测试Babel和es2016预设的尾调用递归:'usestrict';try{functionr(n){if(n%5000===0)console.log(`reachedadepthof${n}`);r(n+1);}r(0);}catch(e){if(!(einstanceofRangeError))throwe;elseconsole.log('stackblown');}我的package.json文件是:{"name":"tail-call-optimization","version":"1.0.0","description":"","main":"inde

javascript - 如何使用 Node.js、Angular.js 和 Firebase 实现无限滚动?

更新8:代码:varconfig={info};firebase.initializeApp(config);varfb=firebase.database().ref("posts/fun");varapp=angular.module('app',['firebase']);app.controller('ctrl',function($scope,$firebaseArray,$timeout){$scope.data=[];var_start=0;var_end=4;var_n=5;$scope.getDataset=function(){fb.orderByChild('id

将对象设置为 null 时的 JavaScript(ES6) WeakMap 垃圾回收

我刚刚读到WeakMaps通过专门使用对象作为键来利用垃圾收集,并且将对象分配给null等同于删除它:letplanet1={name:'Coruscant',city:'GalacticCity'};letplanet2={name:'Tatooine',city:'MosEisley'};letplanet3={name:'Kashyyyk',city:'Rwookrrorro'};constlore=newWeakMap();lore.set(planet1,true);lore.set(planet2,true);lore.set(planet3,true);console.l

javascript - 什么是好的 Javascript RDFa 解析器实现?

我希望为Web应用程序实现基于客户端RDFa的格式设置。这类似于MarkBirbeck'subiquity-rdfa项目。Mark的项目看起来很棒,但它至少有两个缺点:它很慢。将RDFa格式添加到simplepage导致页面加载明显延迟。它很复杂。ubiquity-rdfa项目使用w3cfresnelspecification这是向客户端标记添加简单注释的复杂方法。我正在寻找一种通过客户端代码添加注释的轻量级方法,我不介意做一些工作来获得它。我想要的是一个快速可靠的JavascriptRDFa解析器。我发现的一些实现包括:W3CRDFabookmarkletparserEliasTor

javascript - 这是定点组合器的实现吗?

我认为这不能称为“定点递归”,因为它太简单了。然而,我最近意识到它实际上可能是。我是否有效地实现了定点递归?这里是有问题的函数:/*recursivekleislifold*/varuntil=function(f){returnfunction(a){returnkleisli(f,until(f))(a);};};这里有一些额外的上下文://Theerrormonad'sbindvarbind_=function(f,m){returnm.m===Success?f(m.a):m;};varbind=function(f,m){returnm!==undefined&&m.m!==

javascript - 实现原型(prototype)方法

如果我在String上实现了一个方法x,例如:String.prototype.x=function(a){...}然后新版本的javascript实际上实现了x方法,但在另一种方式上,要么返回与我的实现不同的东西,要么返回比我的实现更多/更少参数的函数。这会破坏我的实现并覆盖它吗? 最佳答案 您将覆盖默认实现。任何使用它的代码都将使用您的代码。有人提议scopedextensionmethods它被拒绝了,因为在JS引擎中实现它的计算成本太高。有人讨论了解决该问题的新提案(协议(protocol))。ES6符号也将为您提供一种解决

javascript - 可以将对象标记为不被垃圾收集吗?

我对JavaScript垃圾收集器了解不多,只知道它试图管理引用,以便可以定期从内存中清除未引用的对象。我正在考虑一些我认为可能会提高性能的东西,如果语言实现者可行的话。它会像这样。在文件中添加一行:"nogc";这类似于usestrict设置。它会将文件中定义的所有内容标记为不用于垃圾回收。我认为这将用于jQuery和下划线等库中。所有辅助方法都将被标记并存储在不受GC管理的单独内存区域中。虽然我知道这可能最终会保留一些从未使用过的东西;它至少会将它与定期的GC过程隔离开来。因此,虽然我们可能会吞噬一些额外的内存,但至少可以减轻GC处理的负担。对于这个建议的天真,我深表歉意,因为我从

javascript - Object.observe/unobserve 如何与垃圾回收交互?

对象上有一个活跃的Object.observe会阻止它被垃圾收集吗?你需要先调用Object.unobserve让它被垃圾回收吗?还是对对象进行GC会移除其所有活跃的观察者? 最佳答案 观察一个对象并不能使它保持活力。一旦对象死亡,它的观察者就不会再收到任何事件。至少在V8的实现中是这样,这是迄今为止唯一的一个。如果有一天此功能成为标准,可以安全地假设它也适用于其他实现。但是,观察会使其事件的观察者保持事件状态,以及与每个观察者函数关联的一些内部堆分配数据结构。事实上,只有当函数本身也死亡时,这些额外的数据才会死亡,即使它早已停止观

javascript - 在 JavaScript 上添加/删除监听器(垃圾收集器)

我有一个关于添加/删除DOM对象监听器的快速问题。我想问一下垃圾收集器是否能够在从页面中删除元素时收集内存。示例:带有几个child列表的标签()varul=document.getElementById('someParent');varchildren=ul.children;varsomeFunction=function(){};for(vari=0;i 最佳答案 ul.remove();行将从DOM中删除ul元素及其所有子元素。但是只要您引用了这些监听器、li元素和ul元素,事件监听器的内存就不会被释放。您在变量child

javascript - ReactJS + Flux - 如何实现 toasts/通知?

我正在尝试了解Flux和Reactjs。考虑以下非常简单的场景:您的表单输入很少。当用户提交表单时,ActionCreator.publishAnnouncement(this.state.announcement);在我的表单组件中被调用。这是publishAnnouncement方法的样子:varpublishAnnouncement=function(announcement){AnnouncementAPI.publishAnnouncement(announcement,successCallback,failureCallback)};AnnouncementAPI只是AJ